﻿#region Usings

using Itpro.Config;

#endregion

namespace Kazkommertsbank.Framework.Test.Components
{
    [AutoConfigSection("kkbSettings")]
    public class KkbSettings : AutoConfig<KkbSettings>, IKkbSettings
    {
        #region Implementation of IKkbSettings

        [AutoConfigDefault(true)]
        public bool IsTestMode { get; set; }

        [AutoConfigDefault("https://epay.kkb.kz/jsp/process/logon.jsp")]
        public string PostUrl { get; set; }

        [AutoConfigDefault("https://3dsecure.kkb.kz/jsp/process/logon.jsp")]
        public string TestModePostUrl { get; set; }

        [AutoConfigDefault("https://3dsecure.kkb.kz/jsp/remote/checkOrdern.jsp")]
        public string OrderStatusCheckUrl { get; set; }

        /// <summary>
        ///   номер терминала магазина, он же MerchantID (дает банк)
        /// </summary>
        [AutoConfigDefault("92061101")]
        public string MerchantID { get; set; }

        /// <summary>
        ///   ID инициализируемого магазина <br /> Необходимо в том случае если компания под одним регистрационным номером в платежной системе(MerchantID), осуществляет торговлю с двух и более торговых сайтов. <br /> Значение для этого поля выдается после регистрации магазина в системе авторизации
        /// </summary>
        [AutoConfigDefault("Test shop")]
        public string ShopID { get; set; }

        /// <summary>
        ///   В данном поле передается информация о языке интерфейса сервера авторизации(rus | eng, По умолчанию: rus)
        /// </summary>
        [AutoConfigDefault("rus")]
        public string Language { get; set; }

        /// <summary>
        ///   Относительный путь к pfx-файлу с ключами магазина (файл дает банк)
        /// </summary>
        [AutoConfigDefault("~/App_Data/cert.pfx")]
        public string PathToCertificate { get; set; }

        /// <summary>
        ///   Пароль к pfx-файлу (дает банк)
        /// </summary>
        [AutoConfigDefault("nissan")]
        public string CertificatePassword { get; set; }

        /// <summary>
        ///   Номер сертификата (дает банк)
        /// </summary>
        [AutoConfigDefault("00C182B189")]
        public string CertificateID { get; set; }

        /// <summary>
        ///   Относительный путь к файлу с публичным ключом банка (файл дает банк)
        /// </summary>
        [AutoConfigDefault("~/App_Data/kkbca.cer")]
        public string PathToKazkommertsbankPublicKey { get; set; }

        /// <summary>
        ///   Линк для возврата покупателя в магазин (на сайт) после успешного проведения оплаты
        /// </summary>
        [AutoConfigDefault("")]
        public string BackLink { get; set; }

        /// <summary>
        ///   Линк для возврата покупателя в магазин (на сайт) после оплаты в случае неудачной авторизации
        /// </summary>
        [AutoConfigDefault("")]
        public string FailureBackLink { get; set; }

        /// <summary>
        ///   Линк для отправки результата авторизации в магазин. Oбязательно
        /// </summary>
        [AutoConfigDefault("")]
        public string PostCallbackLink { get; set; }

        /// <summary>
        ///   Линк для отправки неудачного результата авторизации либо информации об ошибке в магазин. Необязательно
        /// </summary>
        [AutoConfigDefault("")]
        public string FailurePostCallbackLink { get; set; }

        public bool IsValid()
        {
            return ((IsTestMode ? !string.IsNullOrEmpty(TestModePostUrl) : !string.IsNullOrEmpty(PostUrl)) && !string.IsNullOrEmpty(MerchantID)
                    && !string.IsNullOrEmpty(PathToCertificate) && !string.IsNullOrEmpty(CertificatePassword) && !string.IsNullOrEmpty(CertificateID)
                    && !string.IsNullOrEmpty(PathToKazkommertsbankPublicKey) && !string.IsNullOrEmpty(BackLink) && !string.IsNullOrEmpty(PostCallbackLink)
                    && !string.IsNullOrEmpty(OrderStatusCheckUrl));
        }

        #endregion
    }
}